#!/bin/bash

# 实现周期性的清理日志文件

# 定义一个日志文件夹列表
log_folder_list=(
    "$HOME/.awe_auto/logs"
    "$HOME/.welog"
)

# 生成一个临时脚本文件在/tmp目录下
tmp_script_file=/tmp/auto_clean_log.sh

# 定义一个函数，用于生成临时脚本文件
function generate_tmp_script_file() {
    cat >${tmp_script_file} <<EOF
#!/bin/bash

# 定义一个日志文件夹的最大容量 20 MB
log_folder_max_size=20000

# 启动一个后台进程，用于周期性的清理日志文件
while true; do
    # 遍历日志文件夹列表
    for log_folder in ${log_folder_list[@]}; do
        # 判断日志文件夹是否存在
        if [ ! -d "\$log_folder" ]; then
            continue
        fi

        # 获取日志文件夹的大小
        log_folder_size=\$(du -s \$log_folder | awk '{print \$1}')
        # 如果日志文件夹的大小超过了最大容量，则清理日志文件
        if [[ \$log_folder_size -gt \$log_folder_max_size ]]; then
            rm -rf \$log_folder/*
        fi
    done
    # 每隔 30 秒清理一次
    sleep 10
done

EOF

    # 给临时脚本文件赋予执行权限
    chmod +x ${tmp_script_file}
}

auto_clean_quit()
{
    # 退出自动清理日志的进程
    # 获取自动清理日志的进程的PID
    pid=$(ps -ef | grep -v grep | grep -w "${tmp_script_file}" | awk '{print $2}')
    
    # 遍历PID列表
    for p in ${pid[@]}; do
        # 杀死进程
        kill -9 $p
        echo "kill process $p"
    done
}

# main
main() {

    # 退出自动清理日志的进程
    auto_clean_quit

    if [[ "$1" == "-q" || "$1" == "--quit" ]]; then
        exit 0
    fi

    # 生成临时脚本文件
    generate_tmp_script_file

    # 在后台启动临时脚本文件，并且将输出重定向到/dev/null，脚本退出后，后台进程不要退出
    ${tmp_script_file} &>/dev/null &
}

# 运行main函数
main "$@"
